package com.fqgj.sentry.policy.engine.eval.script

import com.fqgj.common.utils.JSONUtils
import com.fqgj.sentry.policy.engine.utils.Utils
import groovy.json.JsonSlurper

class OtherUtils {

    private static final parser = new JsonSlurper()

    static toJsonObj(String jsonString) {
        parser.parseText(jsonString)
    }

    static String toJsonString(Object o) {
        Utils.toJsonString(o)
    }

    static String listToString(Iterable<? extends CharSequence> list, String delimiter) {
        String.join(delimiter, list)
    }

    static <T> T toTypedObj(String jsonString, Class<T> valueType) {
        JSONUtils.json2pojo(jsonString, valueType)
    }

    static <T> List<T> toTypedObjList(String jsonString, Class<T> valueType) {
        if (jsonString == null || jsonString == "") {
            return new ArrayList<T>()
        }
        JSONUtils.json2list(jsonString, valueType)
    }

    static <T> Map<String, T> toTypedObjMap(String jsonString, Class<T> valueType) {
        JSONUtils.json2map(jsonString, valueType)
    }

    static getSuccessJsonData(String json) {
        def jsonObj = toJsonObj(json)
        def jsonData = jsonObj.data
        if(jsonData != null && jsonData instanceof String) {
            jsonData = toJsonObj(jsonData)
        }
        jsonData
    }

    static void main(String[] args) {
        print(getSuccessJsonData("{  \"code\" : 0,  \"msg\" : \"成功\",  \"success\" : true,  \"data\" : {    \"reportNo\" : \"1001151384306542978540\",    \"msgCode\" : \"0000\",    \"msg\" : \"响应成功\",    \"applyTime\" : \"2017年12月21日15:57:45\",    \"reportTime\" : \"2017年12月21日15:57:45\",    \"name\" : \"高仁国\",    \"idNo\" : \"350128199001161715\",    \"mobile\" : \"13636148888\",    \"birthDay\" : \"19900116\",    \"sex\" : \"M\",    \"age\" : 27,    \"registAddr\" : \"福建省福州市平潭县\",    \"otherMobileNum\" : 0,    \"liveAddr\" : \"福建省福州市仓山区xxx街道,福州市\",    \"liveAddrReportTime\" : \"2017-12\",    \"workAddr\" : null,    \"workAddrReportTime\" : null,    \"isCheat\" : 1,    \"haveLoanApply\" : 1,    \"applyStatus\" : 2,    \"applyCity\" : \"陕西省西安市,陕西省渭南市\",    \"lendsTime\" : \"2017-06\",    \"overDue\" : 2,    \"currentDue\" : 3,    \"isTouchBlackGrey\" : 1,    \"isFuMian\" : 2,    \"fuMianDate\" : null,    \"touchBlackGreyDate\" : \"2017-11\",    \"linkMan\" : 3,    \"linkManIsBlack\" : 1,    \"linkManValidTime\" : null  },  \"dealNo\" : \"bde28d2c-0940-476a-bf59-08bd1e389af3\"}"))

    }

}
